home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / A-COMAL Series / (k)aar.d64 / func.value < prev    next >
Text File  |  2009-01-31  |  1KB  |  47 lines

  1. 9000 //
  2. 9010 FUNC VALUE(NUMBER$) CLOSED
  3. 9020   DIM NUM$ OF LEN(NUMBER$)+1
  4. 9030   SIGN:=1; PTR:=1; V:=0; E:=0
  5. 9040   NUM$:=NUMBER$+"!"
  6. 9050   WHILE NUM$(PTR:PTR)=" " DO PTR:+1
  7. 9060   IF NUM$(PTR:PTR)="-" THEN
  8. 9070     SIGN:=-1; PTR:+1
  9. 9080   ELIF NUM$(PTR:PTR)="+" THEN
  10. 9090     PTR:+1
  11. 9100   ENDIF 
  12. 9110   WHILE DIGIT DO
  13. 9120     V:=V*10+ORD(NUM$(PTR:PTR))-ORD("0")
  14. 9130     PTR:+1
  15. 9140   ENDWHILE 
  16. 9150   IF NUM$(PTR:PTR)="." THEN
  17. 9160     PTR:+1
  18. 9170     WHILE DIGIT DO
  19. 9180       V:=V*10+ORD(NUM$(PTR:PTR))-ORD("0")
  20. 9190       PTR:+1; E:-1
  21. 9200     ENDWHILE 
  22. 9210   ENDIF 
  23. 9220   IF NUM$(PTR:PTR) IN "E┼" THEN
  24. 9230     PTR:+1; E2:=0; E2S:=1
  25. 9240     IF NUM$(PTR:PTR)="-" THEN
  26. 9250       E2S:=-1; PTR:+1
  27. 9260     ELIF NUM$(PTR:PTR)="+" THEN
  28. 9270       E2S:=1; PTR:+1
  29. 9280     ENDIF 
  30. 9290     WHILE DIGIT DO
  31. 9300       E2:=E2*10+ORD(NUM$(PTR:PTR))-ORD("0")
  32. 9310       PTR:+1
  33. 9320     ENDWHILE 
  34. 9330     E:+E2*E2S
  35. 9340   ENDIF 
  36. 9350   IF E>0 THEN
  37. 9360     FOR X:=1 TO E DO V:=V*10
  38. 9370   ELIF E<0 THEN
  39. 9380     FOR X:=-1 TO E STEP -1 DO V:=V/10
  40. 9390   ENDIF 
  41. 9400   RETURN SIGN*V
  42. 9410   //
  43. 9420   FUNC DIGIT 
  44. 9430     RETURN NUM$(PTR:PTR) IN "0123456789"
  45. 9440   ENDFUNC DIGIT
  46. 9450 ENDFUNC VALUE
  47.